<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>Tuxxedo Engine API Documentation</title>

		<link rel="stylesheet" href="./style.css" media="all" type="text/css" />
	</head>
	<body>

<h1>Changelog</h1>

<h2><span>1.2.0</span></h2>
<div class="box edge-title">
	<div class="inner">
		<table style="width: 100%" cellspacing="2" cellpadding="0">
			<tr class="head">
				<td class="strong" nowrap="nowrap" style="width: 20%;">Object</td>
				<td class="strong">Change description</td>
			</tr>
			<tr class="row">
	<td nowrap="nowrap"><a href="function-tuxxedo-doc-error-546235.html">tuxxedo_doc_error()</a></td>
	<td style="width: 100%">This function now prints SQL query backtraces</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="function-tuxxedo-error-handler-111498.html">tuxxedo_error_handler()</a></td>
	<td style="width: 100%">This function is now CLI compatible</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="function-tuxxedo-exception-handler-122075.html">tuxxedo_exception_handler()</a></td>
	<td style="width: 100%">This function is now CLI compatible</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="function-tuxxedo-multi-error-512058.html">tuxxedo_multi_error()</a></td>
	<td style="width: 100%">The $exception parameter now defaults to NULL</td>
</tr><tr class="row">
	<td nowrap="nowrap">&nbsp;</td>
	<td style="width: 100%">Added the $show_all parameter</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="function-tuxxedo-shutdown-handler-598852.html">tuxxedo_shutdown_handler()</a></td>
	<td style="width: 100%">This function is now CLI compatible</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="function-tuxxedo-trim-path-567367.html">tuxxedo_trim_path()</a></td>
	<td style="width: 100%">Removed the $debug_trim parameter</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-input-016037.html">\DevTools\Utilities\IO::input()</a></td>
	<td style="width: 100%">A value is no longer required for a CLI argument for it to be considered valid</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-init-684201.html">\Tuxxedo\Bootstrap::init()</a></td>
	<td style="width: 100%">After a hook is executed, the preloadables is no longer unset, but reset to an array</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="property-fields-661125.html">\Tuxxedo\Datamanager\Adapter\Session::$fields</a></td>
	<td style="width: 100%">Added the 'rehash' field</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method---construct-993529.html">\Tuxxedo\Datamanager\Adapter\Session::__construct()</a></td>
	<td style="width: 100%">User-Agent and Location is no longer manually set as the constants no longer exists but figured out on its own</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="property-fields-394761.html">\Tuxxedo\Datamanager\Adapter\Style::$fields</a></td>
	<td style="width: 100%">Renamed 'defaultstyle' to 'isdefault'</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-isavailableuserfield-134144.html">\Tuxxedo\Datamanager\Adapter\User::isAvailableUserField()</a></td>
	<td style="width: 100%">The return value is now negated</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-isvalidusername-090252.html">\Tuxxedo\Datamanager\Adapter\User::isValidUsername()</a></td>
	<td style="width: 100%">This method now requires a username to be at least 3 characters and no longer than 32 characters big</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="property-fields-155527.html">\Tuxxedo\Datamanager\Adapter\Usergroup::$fields</a></td>
	<td style="width: 100%">Added the 'users' virtual field</td>
</tr><tr class="row">
	<td nowrap="nowrap">&nbsp;</td>
	<td style="width: 100%">Removed the 'type' field</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="class-tuxxedo-datamanager-adapter-usergroup-770139.html">\Tuxxedo\Datamanager\Adapter\Usergroup</a></td>
	<td style="width: 100%">This class now implements the 'VirtualDispatcher' hook</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-getdata-342131.html">\Tuxxedo\Exception\Multi::getData()</a></td>
	<td style="width: 100%">Prior this method was called 'getFormData()'</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="class-tuxxedo-exception-multi-125565.html">\Tuxxedo\Exception\Multi</a></td>
	<td style="width: 100%">This exception used to be called 'FormData'</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-factory-849438.html">\Tuxxedo\Helper::factory()</a></td>
	<td style="width: 100%">This method no longer throws a basic exception on invalid handles as its handled by the autoloader</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-count-703063.html">\Tuxxedo\Helper\Database::count()</a></td>
	<td style="width: 100%">Added the $where parameter</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-invoke-323615.html">\Tuxxedo\Intl::invoke()</a></td>
	<td style="width: 100%">This method now tries to resolve the browsers Accept-Language and use that as a preference</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="class-tuxxedo-intl-phrasegroup-544103.html">\Tuxxedo\Intl\Phrasegroup</a></td>
	<td style="width: 100%">This class now implements the InfoAccess pattern</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-exists-064809.html">\Tuxxedo\Loader::exists()</a></td>
	<td style="width: 100%">This method now also checks for traits</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-routeascallback-579061.html">\Tuxxedo\Loader::routeAsCallback()</a></td>
	<td style="width: 100%">This method now only supports defining one route at a time</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-routeaspath-702233.html">\Tuxxedo\Loader::routeAsPath()</a></td>
	<td style="width: 100%">This method now only supports defining one route at a time</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-routeasregex-237655.html">\Tuxxedo\Loader::routeAsRegex()</a></td>
	<td style="width: 100%">This method now only supports defining one route at a time</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-dispatch-917111.html">\Tuxxedo\MVC\Controller::dispatch()</a></td>
	<td style="width: 100%">Removed the 'final' modifier from this method</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-setlayout-115984.html">\Tuxxedo\MVC\Controller::setLayout()</a></td>
	<td style="width: 100%">Removed the 'final' modifier from this method</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-setrouter-849274.html">\Tuxxedo\MVC\Controller::setRouter()</a></td>
	<td style="width: 100%">Any router can be passed to this method, prior only 'Uri' could be passed</td>
</tr><tr class="row">
	<td nowrap="nowrap">&nbsp;</td>
	<td style="width: 100%">Removed the 'final' modifier from this method</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-setview-692913.html">\Tuxxedo\MVC\Controller::setView()</a></td>
	<td style="width: 100%">Removed the 'final' modifier from this method</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method---construct-297347.html">\Tuxxedo\MVC\Router::__construct()</a></td>
	<td style="width: 100%">The $prefix parameter can now be used to define a controller from another namespace</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-invoke-481835.html">\Tuxxedo\Session::invoke()</a></td>
	<td style="width: 100%">This method no longer requires the datastore to be loaded to function</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-start-685044.html">\Tuxxedo\Session::start()</a></td>
	<td style="width: 100%">Removed the old CSRF code that was never fully implemented</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-allowclass-973075.html">\Tuxxedo\Template\Compiler::allowClass()</a></td>
	<td style="width: 100%">This method no longer validates the input</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-allowclosure-909833.html">\Tuxxedo\Template\Compiler::allowClosure()</a></td>
	<td style="width: 100%">This method no longer validates the input</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-allowfunction-861392.html">\Tuxxedo\Template\Compiler::allowFunction()</a></td>
	<td style="width: 100%">This method no longer validates the input</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="interface-tuxxedo-database-driver-031503.html">\Tuxxedo\Database\Driver</a></td>
	<td style="width: 100%">Removed the 'getDriverRequirements()' method</td>
</tr>
		</table>
	</div>
</div><h2><span>1.1.0</span></h2>
<div class="box edge-title">
	<div class="inner">
		<table style="width: 100%" cellspacing="2" cellpadding="0">
			<tr class="head">
				<td class="strong" nowrap="nowrap" style="width: 20%;">Object</td>
				<td class="strong">Change description</td>
			</tr>
			<tr class="row">
	<td nowrap="nowrap"><a href="method-getaffectedrows-521668.html">\Tuxxedo\Database::getAffectedRows()</a></td>
	<td style="width: 100%">This method is no longer a part of the driver interface</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="class-tuxxedo-database-driver-mysql-546558.html">\Tuxxedo\Database\Driver\Mysql</a></td>
	<td style="width: 100%">The casing of this class was changed to comply with the autoloader rules</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="class-tuxxedo-database-driver-mysql-result-445087.html">\Tuxxedo\Database\Driver\Mysql\Result</a></td>
	<td style="width: 100%">The casing of this class' namespace was changed to comply with the autoloader rules</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="class-tuxxedo-database-driver-mysqli-398287.html">\Tuxxedo\Database\Driver\Mysqli</a></td>
	<td style="width: 100%">The casing of this class was changed to comply with the autoloader rules</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="class-tuxxedo-database-driver-mysqli-result-035783.html">\Tuxxedo\Database\Driver\Mysqli\Result</a></td>
	<td style="width: 100%">The casing of this class' namespace was changed to comply with the autoloader rules</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="class-tuxxedo-database-driver-pdo-366572.html">\Tuxxedo\Database\Driver\Pdo</a></td>
	<td style="width: 100%">The casing of this class was changed to comply with the autoloader rules</td>
</tr><tr class="row">
	<td nowrap="nowrap">&nbsp;</td>
	<td style="width: 100%">This class now works flawlessly with SQLite</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="class-tuxxedo-database-driver-pdo-result-780647.html">\Tuxxedo\Database\Driver\Pdo\Result</a></td>
	<td style="width: 100%">The casing of this class' namespace was changed to comply with the autoloader rules</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-isfreed-814559.html">\Tuxxedo\Database\Result::isFreed()</a></td>
	<td style="width: 100%">Prior this method was a part of the result interface</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="class-tuxxedo-database-result-813950.html">\Tuxxedo\Database\Result</a></td>
	<td style="width: 100%">This class now implements the Iteratable design pattern</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method---construct-083524.html">\Tuxxedo\Datamanager\Adapter::__construct()</a></td>
	<td style="width: 100%">Added the $options parameter</td>
</tr><tr class="row">
	<td nowrap="nowrap">&nbsp;</td>
	<td style="width: 100%">Added the $parent parameter</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-factory-357182.html">\Tuxxedo\Datamanager\Adapter::factory()</a></td>
	<td style="width: 100%">Added the $options parameter</td>
</tr><tr class="row">
	<td nowrap="nowrap">&nbsp;</td>
	<td style="width: 100%">Added the $parent parameter</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-init-659835.html">\Tuxxedo\Datamanager\Adapter::init()</a></td>
	<td style="width: 100%">Added the $options parameter</td>
</tr><tr class="row">
	<td nowrap="nowrap">&nbsp;</td>
	<td style="width: 100%">Added the $parent parameter</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-save-570508.html">\Tuxxedo\Datamanager\Adapter::save()</a></td>
	<td style="width: 100%">Added the $execute_hooks parameter</td>
</tr><tr class="row">
	<td nowrap="nowrap">&nbsp;</td>
	<td style="width: 100%">This method now generates queries for more cases based on the state of the identifier</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-validate-057703.html">\Tuxxedo\Datamanager\Adapter::validate()</a></td>
	<td style="width: 100%">This method was rewritten from scratch and now handles more cases than before</td>
</tr><tr class="row">
	<td nowrap="nowrap">&nbsp;</td>
	<td style="width: 100%">This method can now validate identifiers</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="property-fields-394761.html">\Tuxxedo\Datamanager\Adapter\Style::$fields</a></td>
	<td style="width: 100%">Added the 'inherit' field</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="property-fields-212929.html">\Tuxxedo\Datamanager\Adapter\User::$fields</a></td>
	<td style="width: 100%">Changed the name of 'styleid' to 'style_id'</td>
</tr><tr class="row">
	<td nowrap="nowrap">&nbsp;</td>
	<td style="width: 100%">Changed the name of 'languageid' to 'language_id'</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-rebuild-962441.html">\Tuxxedo\Datastore::rebuild()</a></td>
	<td style="width: 100%">This method now internally uses datamanagers to save</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method---construct-270188.html">\Tuxxedo\Exception\MVC\InvalidAction::__construct()</a></td>
	<td style="width: 100%">This method now supports previous exceptions ($previous parameter)</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method---construct-727220.html">\Tuxxedo\Exception\MVC\InvalidController::__construct()</a></td>
	<td style="width: 100%">This method now supports previous exceptions ($previous parameter)</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method---construct-860124.html">\Tuxxedo\Exception\SQL::__construct()</a></td>
	<td style="width: 100%">Added the $driver parameter</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method---construct-240093.html">\Tuxxedo\Exception\TemplateCompiler::__construct()</a></td>
	<td style="width: 100%">Added the $stack_data parameter</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="constant-opt-array-029654.html">\Tuxxedo\Input::OPT_ARRAY</a></td>
	<td style="width: 100%">Prior this constant was named 'INPUT_OPT_ARRAY'</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="constant-opt-raw-960220.html">\Tuxxedo\Input::OPT_RAW</a></td>
	<td style="width: 100%">Prior this constant was named 'INPUT_OPT_RAW'</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="class-tuxxedo-input-685650.html">\Tuxxedo\Input</a></td>
	<td style="width: 100%">Prior this class was named 'Filter'</td>
</tr><tr class="row">
	<td nowrap="nowrap">&nbsp;</td>
	<td style="width: 100%">The 'filter' PHP extension which previously was optional is now required</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="class-tuxxedo-mvc-view-521685.html">\Tuxxedo\MVC\View</a></td>
	<td style="width: 100%">This is now an alias of \Tuxxedo\Template</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="property-options-817074.html">\Tuxxedo\Session::$options</a></td>
	<td style="width: 100%">Added 'secure' for HTTPS enforcement</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method---construct-702439.html">\Tuxxedo\Style\Storage\Filesystem::__construct()</a></td>
	<td style="width: 100%">The 'templatesdir' style table row can now be used to define a custom template directory if present</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method---construct-804183.html">\Tuxxedo\Template\Compiler::__construct()</a></td>
	<td style="width: 100%">Changed the second parameter to $stack_data</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-compile-144594.html">\Tuxxedo\Template\Compiler::compile()</a></td>
	<td style="width: 100%">Exceptions are now way more expressive in terms of their messages by returning the stack data</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-getcompiledsource-481926.html">\Tuxxedo\Template\Compiler::getCompiledSource()</a></td>
	<td style="width: 100%">This method used to be called 'get()'</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-setsource-729335.html">\Tuxxedo\Template\Compiler::setSource()</a></td>
	<td style="width: 100%">This method used to be called 'set()'</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-getpasswordsalt-437541.html">\Tuxxedo\User::getPasswordSalt()</a></td>
	<td style="width: 100%">This method will now properly change character casing instead of a fixed set of cased characters</td>
</tr><tr class="row">
	<td nowrap="nowrap"><a href="method-rebuild-145032.html">\Tuxxedo\Datamanager\Hooks\Cache::rebuild()</a></td>
	<td style="width: 100%">This method no longer takes any parameters</td>
</tr>
		</table>
	</div>
</div>

<h2><span>See also</span></h2>
<div class="box edge-title">
	<div class="inner">
		<ul>
			<li><a href="./index.html">Table of contents</a></li>
			<li><a href="news.html">News</a></li>
		</ul>
	</div>
</div>

		<p>
			<em>Generated by Tuxxedo Engine 1.2.0 "Beloved" Release Candidate 1 (experimental).</em>
		</p>
	</body>
</html>